home *** CD-ROM | disk | FTP | other *** search
- #include "SoundManager.h"
- #include "SoundPlayer.h"
-
-
-
- void SoundManager::PlaySound(short id,Boolean loopQ)
- {
- Entry* entry = NULL;
-
- for(short z = 0;z<fSoundList.Size();z++){
- if(fSoundList[z].id == id){
- entry = &fSoundList[z];
- break;
- }
- }
-
- if(entry != NULL){
- fSoundPlayer->PlaySnd(entry->sndHandle,entry->length,loopQ);
- }
- }
-
-
- OSErr SoundManager::PreloadSounds()
- {
- OSErr err = noErr;
- UInt32 num = Count1Resources('snd ');
-
- err = fSoundList.Reallocate(num);
- if(err == noErr){
- for(short z = 0;z<num;z++){
- fSoundList[z].sndHandle = Get1IndResource('snd ',z+1);
- if(fSoundList[z].sndHandle != NULL){
- OSType type;
- Str255 name;
-
- GetResInfo(fSoundList[z].sndHandle, &fSoundList[z].id, &type, name);
- DetachResource(fSoundList[z].sndHandle);
- HLock(fSoundList[z].sndHandle);
- fSoundList[z].length = GetHandleSize(fSoundList[z].sndHandle);
- }else{
- err = -108;
- break;
- }
- }
- }
-
- return err;
- }
-
-
- SoundManager::~SoundManager()
- {
- delete fSoundPlayer;
-
- for(short z = 0;z<fSoundList.Size();z++){
- if(fSoundList[z].sndHandle != NULL){
- DisposeHandle(fSoundList[z].sndHandle);
- }
- }
- }
-
-
- SoundManager::SoundManager(OSErr& err)
- : fSoundPlayer(NULL)
- {
- err = PreloadSounds();
- if(err == noErr){
- fSoundPlayer = new SoundPlayer(err);
- }
- }
-